package view;

import com.vividsolutions.jts.geom.Point;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
import model.EstiloPontoGastronomico;
import model.TipoPontoGastronomico;
import model.Usuario;

/**
 *
 * @author Lucas S Bueno
 */
public class UsuarioBean implements Serializable {

   private int id;
   private String email;
   private String nome;
   private String senha;
   private Point geolocalizacaoPadrao;
   private int regiaoAbrangencia;
   private float gastoMedio;
   private boolean ehAdministrador;
   private Set<TipoPontoGastronomicoBean> tiposPreferidos;
   private Set<EstiloPontoGastronomicoBean> estilosPreferidos;

   public UsuarioBean() {
   }

   public UsuarioBean(int id, String email, String nome, String senha, Point geolocalizacaoPadrao, int regiaoAbrangencia, float gastoMedio, boolean ehAdministrador, Set<TipoPontoGastronomicoBean> tiposPreferidos, Set<EstiloPontoGastronomicoBean> estilosPreferidos) {
      this.id = id;
      this.email = email;
      this.nome = nome;
      this.senha = senha;
      this.geolocalizacaoPadrao = geolocalizacaoPadrao;
      this.regiaoAbrangencia = regiaoAbrangencia;
      this.gastoMedio = gastoMedio;
      this.ehAdministrador = ehAdministrador;
      this.tiposPreferidos = tiposPreferidos;
      this.estilosPreferidos = estilosPreferidos;
   }

   public UsuarioBean(String email, String nome, String senha, Point geolocalizacaoPadrao, int regiaoAbrangencia, float gastoMedio, boolean ehAdministrador, Set<TipoPontoGastronomicoBean> tiposPreferidos, Set<EstiloPontoGastronomicoBean> estilosPreferidos) {
      this.email = email;
      this.nome = nome;
      this.senha = senha;
      this.geolocalizacaoPadrao = geolocalizacaoPadrao;
      this.regiaoAbrangencia = regiaoAbrangencia;
      this.gastoMedio = gastoMedio;
      this.ehAdministrador = ehAdministrador;
      this.tiposPreferidos = tiposPreferidos;
      this.estilosPreferidos = estilosPreferidos;
   }

   public UsuarioBean(int id) {
      this.id = id;
   }
   
   public UsuarioBean(Usuario usuario) {
      this.id = usuario.getId();
      this.email = usuario.getEmail();
      this.nome = usuario.getNome();
      this.senha = usuario.getSenha();
      this.geolocalizacaoPadrao = usuario.getGeolocalizacaoPadrao();
      this.regiaoAbrangencia = usuario.getRegiaoAbrangencia();
      this.gastoMedio = usuario.getGastoMedio();
      this.ehAdministrador = usuario.isEhAdministrador();
      
      Set<TipoPontoGastronomicoBean> tipos = new HashSet<TipoPontoGastronomicoBean>();
      for (TipoPontoGastronomico tipo : usuario.getTiposPreferidos()) {
         tipos.add(new TipoPontoGastronomicoBean(tipo));
      }
      this.tiposPreferidos = tipos;
      
      Set<EstiloPontoGastronomicoBean> estilos = new HashSet<EstiloPontoGastronomicoBean>();
      for (EstiloPontoGastronomico estilo : usuario.getEstilosPreferidos()) {
         estilos.add(new EstiloPontoGastronomicoBean(estilo));
      }
      this.estilosPreferidos = estilos;
   }

   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   public String getEmail() {
      return email;
   }

   public void setEmail(String email) {
      this.email = email;
   }

   public String getNome() {
      return nome;
   }

   public void setNome(String nome) {
      this.nome = nome;
   }

   public String getSenha() {
      return senha;
   }

   public void setSenha(String senha) {
      this.senha = senha;
   }

   public Point getGeolocalizacaoPadrao() {
      return geolocalizacaoPadrao;
   }

   public void setGeolocalizacaoPadrao(Point geolocalizacaoPadrao) {
      this.geolocalizacaoPadrao = geolocalizacaoPadrao;
   }

   public int getRegiaoAbrangencia() {
      return regiaoAbrangencia;
   }

   public void setRegiaoAbrangencia(int regiaoAbrangencia) {
      this.regiaoAbrangencia = regiaoAbrangencia;
   }

   public float getGastoMedio() {
      return gastoMedio;
   }

   public void setGastoMedio(float gastoMedio) {
      this.gastoMedio = gastoMedio;
   }

   public boolean isEhAdministrador() {
      return ehAdministrador;
   }

   public void setEhAdministrador(boolean ehAdministrador) {
      this.ehAdministrador = ehAdministrador;
   }

   public Set<TipoPontoGastronomicoBean> getTiposPreferidos() {
      return tiposPreferidos;
   }

   public void setTiposPreferidos(Set<TipoPontoGastronomicoBean> tiposPreferidos) {
      this.tiposPreferidos = tiposPreferidos;
   }

   public Set<EstiloPontoGastronomicoBean> getEstilosPreferidos() {
      return estilosPreferidos;
   }

   public void setEstilosPreferidos(Set<EstiloPontoGastronomicoBean> estilosPreferidos) {
      this.estilosPreferidos = estilosPreferidos;
   }
}
